package com.ruoyi.project.lease.customer.mapper;

import java.util.List;
import com.ruoyi.project.lease.customer.domain.Customer;

/**
 * 客户管理Mapper接口
 * 
 * @author admin
 * @date 2021-12-31
 */
public interface CustomerMapper 
{
    /**
     * 查询客户管理
     * 
     * @param custNo 客户管理主键
     * @return 客户管理
     */
    public Customer selectCustomerByCustNo(Long custNo);

    /**
     * 查询客户管理通过手机号
     *
     * @param custPhone 客户管理主键
     * @return 客户管理
     */
    public Customer selectCustomerByCustPhone(String custPhone);

    /**
     * 查询客户, 过滤del_flag
     *
     * @param custNo 客户管理主键
     * @param delFlag 删除状态
     * @return 客户管理
     */
    public Customer selectCustomerByCustNoDelFlag(Long custNo, int delFlag);

    /**
     * 查询客户管理列表
     * 
     * @param customer 客户管理
     * @return 客户管理集合
     */
    public List<Customer> selectCustomerList(Customer customer);

    /**
     * 查询所有客户
     *
     * @return 客户管理集合
     */
    public List<Customer> selectAllCustomer();

    /**
     * 查询所有状态正常的客户
     *
     * @return 客户管理集合
     */
    public List<Customer> selectNormalCustomer();

    /**
     * 新增客户管理
     * 
     * @param customer 客户管理
     * @return 结果
     */
    public int insertCustomer(Customer customer);

    /**
     * 修改客户管理
     * 
     * @param customer 客户管理
     * @return 结果
     */
    public int updateCustomer(Customer customer);

    /**
     * 删除客户管理
     * 
     * @param custNo 客户管理主键
     * @return 结果
     */
    public int deleteCustomerByCustNo(Long custNo);

    /**
     * 批量删除客户管理
     * 
     * @param custNos 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCustomerByCustNos(String[] custNos);

    /**
     * 查询本月新客户数
     * @param monthFirstStr 本月第一天
     * @param monthLastStr 本月最后一天
     * @return 新客户数
     */
    public Long selectThisMonthNewCust(String monthFirstStr, String monthLastStr);

    /**
     * 将软删除的客户恢复
     *
     * @param phoneNum 客户电话
     * @return 结果
     */
    public int recoveryMode(String phoneNum);
}
